package com.wdb007.venus.svc.facade;

import java.util.List;
import java.util.Map;

import com.wdb007.venus.svc.facade.coupon.model.CouponInfo;
import com.wdb007.venus.svc.facade.exception.BizException;

public interface CouponService {
	/**
	 * 获取小程序中展示的优惠券列表
	 * @param oper  0--表示未使用; 1--表示已使用; 2--表示已过期
	 * @param userId 用户ID
	 * @return
	 * @throws BizException
	 */
	List<CouponInfo> getCouponList(String oper, Long userId) throws BizException;
	/**
	 * 获取支付页面展示的优惠券列表
	 * @param oper 0--余额支付、1--购买月卡、2--购买年卡
	 * @param userid 用户id
	 * @param amount 如果是余额支付，则amount不能为null，如果是购买月卡或者购买年卡，则amount为null。
	 * @param bookcaseId 书柜编号
	 * @return
	 */
	List<CouponInfo> getChargeCouponList(String oper, Long userid, String amount, String bookcaseId) throws BizException;
	/**
	 * 获取用户最优的一个优惠券
	 * @param oper 0--余额支付、1--购买月卡、2--购买年卡、3--购买绘本
	 * @param userid 用户id
	 * @param amount 金额	 如果是3,则该字段表示图书所借书柜的编号
	 * @return
	 * @throws BizException
	 */
	CouponInfo getCoupon(String oper, Long userid, String amount) throws BizException;
	
	CouponInfo getCouponById(String couponId) throws BizException;
	
	int updateCoupon(String couponId, Integer status, Long userChargeLogId) throws BizException;
	
	CouponInfo draw(Long userId, String couponRuleId) throws BizException;
	
	CouponInfo draw(Long userId, String couponRuleId, String uid) throws BizException;
	
	CouponInfo getCouponRuleInfo(String couponRuleId) throws BizException;
	
	void scheduleUpdateCouponLock() ;
	
    void isNewUser(String coupon_rule_id, String mobile_no) throws BizException;
    
    /**
     * 根据券码查询使用规则
     */
    Map<String, Object> couponBookShelfInfo(String couponRuleId);
    
    void scanQrCode(String coupon_rule_id, String uid) throws BizException;
    
	
}
